package regexobject;
/** 包装类的演示 */
public class IntegerDemo {
    public static void main(String[] args) {
        //演示包装类的常用操作：
        //1)可以通过包装类来获取基本类型的取值范围
        int max = Integer.MAX_VALUE; //获取int的最大值
        int min = Integer.MIN_VALUE; //获取int的最小值
        System.out.println("int的最大值为："+max+"，最小值为："+min);

        double max1 = Double.MAX_VALUE;
        double min1 = Double.MIN_VALUE;
        System.out.println("double的最大值为："+max1+"，最小值为："+min1);

        //2)包装类可以将字符串转换为对应的基本类型---必须熟练掌握
        String s1 = "28";
        int age = Integer.parseInt(s1); //将字符串s1转换为int类型并赋值给age
        System.out.println(age); //28---int类型

        String s2 = "123.464";
        double price = Double.parseDouble(s2); //将字符串s2转换为double类型并赋值给price
        System.out.println(price); //123.464---double类型

        //演示包装类的定义(将基本类型改造成包装类)
        Integer i1 = new Integer(5);
        Integer i2 = new Integer(5);
        System.out.println(i1==i2); //false，==比较的是地址
        System.out.println(i1.equals(i2)); //true，包装类重写equals()比较值了

        Double d1 = new Double(3.14);
        Double d2 = new Double(3.14);
        System.out.println(d1==d2); ///false，==比较的是地址
        System.out.println(d1.equals(d2)); //true，包装类重写equals()比较值了

        //valueOf()方法会复用1个字节(-128到127)范围内的数据，建议使用valueOf()
        Integer i3 = Integer.valueOf(5);
        Integer i4 = Integer.valueOf(5); //复用了i3的数据
        System.out.println(i3==i4); //true
        System.out.println(i3.equals(i4)); //true，包装类重写equals()比较值了

        Double d3 = Double.valueOf(3.14);
        Double d4 = Double.valueOf(3.14); //double类型中valueOf()方法无法复用1个字节范围内的数据
        System.out.println(d3==d4); //false，==比较的是地址
        System.out.println(d3.equals(d4)); //true，包装类重写equals()比较值了

        //将包装类转换为基本类型
        int i = i4.intValue();
        System.out.println(i); //5

        double d = d4.doubleValue();
        System.out.println(d); //3.14

        //触发了自动装箱特性，会被编译为：Integer i = Integer.valueOf(5);
        Integer i5 = 5; //基本类型到包装类---装箱
        //触发了自动拆箱特性，会被编译为：int j = i.intValue();
        int j = i5; //包装类到基本类型---拆箱
    }
}
